#include "cw32l010_sysctrl.h"
#include "cw32l010_gpio.h"
#include "bsp_gpio.h"

void bsp_gpio_init(void)
{
    GPIO_InitTypeDef GPIO_InitStructure = {0};

    __SYSCTRL_GPIOA_CLK_ENABLE();
    __SYSCTRL_GPIOB_CLK_ENABLE();

    GPIO_InitStructure.IT = GPIO_IT_NONE;
    GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;

    // GPIO_InitStructure.Pins = DEVICE_PWR_LED_PIN;
    // GPIO_Init(DEVICE_PWR_LED_GPIO, &GPIO_InitStructure);

    GPIO_InitStructure.Pins = DEVICE_ALARM_LED_PIN;
    GPIO_Init(DEVICE_ALARM_LED_GPIO, &GPIO_InitStructure);

    GPIO_InitStructure.Pins = DEVICE_NET_LED_PIN;
    GPIO_Init(DEVICE_NET_LED_GPIO, &GPIO_InitStructure);

    GPIO_InitStructure.Mode = GPIO_MODE_INPUT_PULLUP;
    GPIO_InitStructure.Pins = DEVICE_DI_CHECK_PIN;
    GPIO_Init(DEVICE_DI_CHECK_GPIO, &GPIO_InitStructure);
    // NVIC_EnableIRQ(GPIOB_IRQn);

    /*设置为1时，中断的每次新的挂起都会产生一个事件，如果使用了WFE休眠，它可用于唤醒处理器。*/
    // SCB->SCR |= SCB_SCR_SEVONPEND_Msk;
}

/**
 * @brief This funcation handles GPIOB
 */
void GPIOB_IRQHandler(void)
{
    /* USER CODE BEGIN */
    if (CW_GPIOB->ISR_f.PIN4)
    {
        CW_GPIOB->ICR_f.PIN4 = 0;
    }
    /* USER CODE END */
}

/**
 * @brief This funcation handles GPIOA
 */
void GPIOA_IRQHandler(void)
{
    /* USER CODE BEGIN */

    /* USER CODE END */
}
